A widely used interactive language system is "A Programming Language", commonly referred to as APL. The APL processor typically executes in a data processing system having a keyboard input and a raster display output connected to a host processor. APL includes the facility to dynamically construct, modify and execute software as well as directly process data. This processing power derives from its general data structure, the array coupling and the ability to define powerful operators on the structures. There are several descriptions of APL and known APL program products: see Gilman and Rose, "APL: An Interactive Approach", 3rd Edition, John Wiley Publishing Co., 1984; Polivka and Pakin, "APL: The Language and Its Usage", Prentice Hall Publishing Co., 1975; Rodney Zaks, "A Microprogrammed APL Implementation", Sybex, Inc., 1978; Brown, Pakin and Polivka, "APL2 at a Glance", Prentice Hall, 1988 and the IBM publication SH209227, entitled "APL2 Programming: Language Reference, available from International Business Machines Corporation (IBM).
The APL interactive environment supports the definition of software and data upon which the software operates. The APL constructs for software and data are grouped together into accessible "workspaces". While in use for the processing of said software and data, a workspace is maintained in the host processor's internal data storage (main memory). For storage between APL sessions, such workspaces (hereafter WS's) are copied or "saved" from the host processor internal data storage to external retentive data storage. APL commands, issued from within the APL interactive environment, enable the WS's to be saved and retrieved. APL computations are an interpretive program execution.
Each WS is a collection of APL data structures which include named APL objects (variables, defined functions and defined operators), a name or symbol table which enables access to the named objects within the WS (each WS has its own name table and internal addressability constructs), an execution stack which indicates the current state of execution, both current and pendant, and diverse other objects, such as temporary results and control blocks used by the APL interpreter in its execution of APL applications. Several APL users may be active on one system at the same time and each user is independent of each and every other user. Each APL user has one WS, termed the active WS, which resides in the host processor internal data storage. All WS's not currently active reside in external data storage are referred to as "saved" WS's. To access objects of a saved WS; either the saved WS is first loaded into the host processor internal data storage replacing the current active WS or the desired named objects are copied from the saved WS into the current active WS. When a workspace is loaded, it becomes the active workspace, replacing the prior active workspace in processor internal storage. It is desired to increase the operational flexibility of APL WS's while more efficiently using the host processor internal data storage and reducing the number of users inter-actions required to manage WS's and their contents.
The size and complexity of APL usage has grown to such an extent that managing named objects in a WS has become an increasing problem. An example of the problem is an APL application involving thousands of APL functions and variables, all named. In a WS, the name of each function and variable has to be kept unique at any given instant. Dynamically changing a WS can be difficult because of inadvertent object naming errors. While the naming problem could be solved by segmenting the APL application into a plurality of linked WS's with each WS relating to a particular operation of the application, many APL applications are so dynamic such that no predictable pattern of application solutions can be made. If a large plurality of relatively small WS's are used, then the time for loading the WS's and saving same to external data storage becomes computationally inefficient and time consuming. It is desired to provide a simple but effective management procedure and apparatus for managing names of objects used in application programs.
In APL, each user programmer has its own copy of the application code in the active WS. As the number of simultaneous users increases, the need for additional host processor internal data storage (main memory) also increases. This increase in internal data storage usage can also result in degraded host processor operation caused by storage contention and host processor "thrashing" due to excessive paging WS's between internal and external data storage. In combination with improved management of object names, it is desired to enhance utilization of internal host processor data storage.